package pl.uz.zgora.plan;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

import org.ksoap2.SoapFault;
import org.xmlpull.v1.XmlPullParserException;

import pl.uz.zgora.plan.R;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.database.SQLException;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;


public class MainMenuActivity extends Activity {
	private String selectedGroupName = null;
	private ProgressDialog dialog = null;
	private String selectedTeacherName = null;
	private TextView tvTeacherOrGroupName = null;
	private TextView tvTeacherOrGroupLabel = null;
	/** Czy należy pobrać ponownie dane po obróceniu ekranu ? */
	private Boolean mRefreshOnOrientationChange = true;
	private Przedmiot mPrzedmiot = null;
	private LinearLayout layoutNextClass = null;
	/** Pozycja na liście, zajęć które zostały kliknięte */
	private Integer selectedClass = -1;
	private static Activity mActivity = null;
	/**
	 * Funkcja wywoływana przed zniszczeniem formatki. Np. w momencie obrotu ekranu
	 */
	@Override
	public Object onRetainNonConfigurationInstance() {
	    return mRefreshOnOrientationChange;
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
	    MenuInflater inflater = getMenuInflater();
	    inflater.inflate(R.menu.main_menu_options, menu);
	    return true;
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
	    // Handle item selection
	    switch (item.getItemId()) {
	        case R.id.about:
	            showAboutView();
	            return true;
	        case R.id.settings:
	        	showSettingsView();
	            return true;
	        default:
	            return super.onOptionsItemSelected(item);
	    }
	}
	
	private synchronized void showOrHideUpdateDialog() {
		PrefrencesManager pm = PrefrencesManager.getInstance(this);
		boolean isUpdating = pm.getBooleanFromPreferences("isUpdating");
		if(isUpdating) {
			dialog.show();
		} else {
			dialog.dismiss();
		}
	}
	
	@Override
	public void onStart() {
		super.onStart();

		showOrHideUpdateDialog();
		Thread waitThread = new Thread(new Runnable() {
			PrefrencesManager pm = PrefrencesManager.getInstance(MainMenuActivity.this);
			
			public void run() {
				boolean isUpdating = pm.getBooleanFromPreferences("isUpdating");
				while(isUpdating) {
					isUpdating = pm.getBooleanFromPreferences("isUpdating");
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						HelperMethodsManager.manageException("MainMenuActivity::onStart()", e.getLocalizedMessage(), MainMenuActivity.this);
					}
				}
				showOrHideUpdateDialog();
			}
		});
		waitThread.start();
	}
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_menu);
        
        setupUI();
        
        dialog = HelperMethodsManager.getProgressDialog(this);
        
        tvTeacherOrGroupName = (TextView) findViewById(R.id.teachergroupName);
        tvTeacherOrGroupLabel = (TextView) findViewById(R.id.teachergroupLabel);
        layoutNextClass = (LinearLayout) findViewById(R.id.main_menu_next_class_layout);
        
        mActivity = this;
        
        // Pobranie parametrów przekaznych do panelu
        Bundle intentParams = getIntent().getExtras();
        {
        	if(intentParams != null) {
        		/** Pobiera informacje, czy należy wczytać dane od nowa */
        		final Boolean refreshOnOrientationChangePrev = (Boolean) getLastNonConfigurationInstance();
        		/** Wczytuje dane z bazy SQLite */
        		if(refreshOnOrientationChangePrev == null || refreshOnOrientationChangePrev == true) {
        			selectedGroupName = intentParams.getString("nazwaGrupy");
        			selectedTeacherName = intentParams.getString("nazwaNauczyciela");

        			if(selectedGroupName != null) {
        				tvTeacherOrGroupName.setText(selectedGroupName);
        				tvTeacherOrGroupLabel.setText("Grupa");
        			} else if(selectedTeacherName != null) {
        				tvTeacherOrGroupLabel.setText("Wykładowca");
        				tvTeacherOrGroupName.setText(selectedTeacherName);
        			}
        		}
        	}
        }
        
        
        /*
         * Aplikacja została skonfigurowana i plan został poprawnie pobrany z serwera
         */
        if(selectedGroupName == null && selectedTeacherName == null) {
        	showTimetable();
        } else if(selectedGroupName != null){ // Pobieranie planu dla wybranej grupy
        	Integer selectedGroupId = intentParams.getInt("idGrupy");
        	downloadGroupTimetable(selectedGroupId);
        } else if(selectedTeacherName != null) { // Pobieranie planu dla wybranego wykładowcy
        	Integer selectedTeacherId =  intentParams.getInt("idNauczyciela");
        	downloadTeacherTimetable(selectedTeacherId);
        }
	}
	
	private void showTimetable() {
		String appMode = PrefrencesManager.getInstance(this).getStringFromPreferences("appmode");
		final PlanUzDataSource planDataSource = new PlanUzDataSource(this);
		// Wczytanie planu z bazy danych
		final Plan plan = planDataSource.readPlan();
		try {
			// Sprawdzenie trybu pracy programu: Grupa/Wykładowca
			if(appMode.equals("teacher")) {
				// Tryb nauczyciel
				final Nauczyciel nauczyciel = plan.getNauczycieli().get(0);
				tvTeacherOrGroupName.setText(nauczyciel.getNazwa());
				tvTeacherOrGroupLabel.setText("Wykładowca");
				mRefreshOnOrientationChange = false;
			} else if(appMode.equals("student")){
				// Tryb student
				final Grupa grupa = plan.getGroup();
				tvTeacherOrGroupName.setText(grupa.getNazwa());
				tvTeacherOrGroupLabel.setText("Grupa");
				mRefreshOnOrientationChange = false;
			} else { // Usuwanie wszystkich danych i przejście do konfiguracji początkowej programu
				final Intent intent = new Intent(this, StartPageActivity.class);
				intent.putExtra("forceDBDelete", true);

				intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

				try {
					startActivity(intent);
					finish();
				} catch (android.content.ActivityNotFoundException e) {
					HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), this);
				}
			}
			// Ukrycie informacji o pobieraniu danych
			final LinearLayout layoutDownloadProgress = (LinearLayout) findViewById(R.id.layoutDownloadProgress);
			layoutDownloadProgress.setVisibility(LinearLayout.GONE);

			showButtons();

			showNextClass();
		} catch (SQLException e) {
			HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), this);
		} catch (Exception e) {
			HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), this);
		}
	}
	
	private void downloadGroupTimetable(final Integer selectedGroupId) {
		final PlanUzDataSource planDataSource = new PlanUzDataSource(this, true);
    	final SOAPManager soapManager = new SOAPManager(this);
    	final TextView tv = (TextView) findViewById(R.id.download_progress_layout_text);
    	final Grupa grupa = new Grupa(selectedGroupId, selectedGroupName);
    	// Wątek konwertujący obiekt Plan na zmienne zapisywane do bazy SQLite
    	Thread convertToSQL = new Thread(new Runnable() {
    		
    		Plan plan = null;
    		
    		public void run() {
    			try {
    				setTextViewTextInThread(tv, "Pobieranie planu zajęć");
					plan = soapManager.downloadGroupTimeTable(grupa);
					// Pobieranie kaledarzy
					KalendarzSOAPManager soap = new KalendarzSOAPManager();
					setTextViewTextInThread(tv, "Pobieranie kalendarzy");
					soap.downloadCalendarsList(MainMenuActivity.this);
					ArrayList<KalendarzTyp> calendarTypes = planDataSource.getCalendarsTypeList();
					Set<String> calendarNames = new HashSet<String>();
					for(Przedmiot p: plan.getPrzedmioty()) {
						
						String names[] = p.getUwagi().split("/");
						
						if(p.getUwagi().matches(".*Dzienne.*")) {
							names = p.getUwagi().split(" -");
						}
						
						
						if(names != null) {
							String name = names[0];
							if(!name.substring(0, 1).matches("[0-9]+")) {
								calendarNames.add(name);
							}
						}
					}
					
					setTextViewTextInThread(tv, "Zapisywanie kalendarzy");
					for(KalendarzTyp kt: calendarTypes) {
						for(String name: calendarNames) {
							if(kt.getNazwa().equals(name)) {
								ArrayList<Dzien> kalendarz = soap.downloadCalendar(kt.getLink());
								planDataSource.writeDaysList(kalendarz, kt.getLink());
							}
						}
					}
					manageMainMenuUI();
				} catch (SoapFault e) {
					HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), mActivity);
				} catch (IOException e) {
					HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), mActivity);
				} catch (XmlPullParserException e) {
					HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), mActivity);
				} catch (ParseException e) {
					HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), mActivity);
				}
    			
    			
    			setTextViewTextInThread(tv, "Zapisywanie planu");
    			// Zapisanie planu do bazy SQLite
    			if(!planDataSource.writePlan(plan))
    			{
    				if(plan.getPrzedmioty().isEmpty() && plan.getNauczycieli().isEmpty()) {
    					
    					PrefrencesManager pm =  PrefrencesManager.getInstance(mActivity.getBaseContext());
    					pm.addBooleanToPreferences("hasData", true);
    					
    					layoutNextClass.post(new Runnable() {

    						public void run() {

    							showNextClass();
    						}
    					});
        			} else {
        				HelperMethodsManager.manageException("MainMenuActivity::onCreate()", "Błąd podczas zapisywania planu do bazy danych", mActivity);
        			}
				} else {
					PrefrencesManager pm =  PrefrencesManager.getInstance(mActivity.getBaseContext());
					pm.addBooleanToPreferences("hasData", true);
					
					mRefreshOnOrientationChange = false;
					layoutNextClass.post(new Runnable() {

						public void run() {

							showNextClass();
						}
					});
				}

    		}
    	});
    	convertToSQL.start();
	}
	
	private void setTextViewTextInThread(final TextView tv, final String text) {
		tv.post(new Runnable() {
			
			public void run() {
				tv.setText(text);
			}
		});
	}
	
	private void downloadTeacherTimetable(final Integer selectedTeacherId) {
		final PlanUzDataSource planDataSource = new PlanUzDataSource(this, true);
    	final SOAPManager soapManager = new SOAPManager(this);
    	final TextView tv = (TextView) findViewById(R.id.download_progress_layout_text);
    	final Nauczyciel nauczyciel = new Nauczyciel(selectedTeacherId, selectedTeacherName);
    	
    	Thread convertToSQL = new Thread(new Runnable() {
    		Plan plan = null;
    		public void run() {
    			try {
    				setTextViewTextInThread(tv, "Pobieranie planu zajęć");
    				plan = soapManager.downloadTeacherTimeTable(nauczyciel);
    				// Pobieranie kaledarzy
					KalendarzSOAPManager soap = new KalendarzSOAPManager();
					setTextViewTextInThread(tv, "Pobieranie kalendarzy");
					soap.downloadCalendarsList(MainMenuActivity.this);
					ArrayList<KalendarzTyp> calendarTypes = planDataSource.getCalendarsTypeList();
					Set<String> calendarNames = new HashSet<String>();
					for(Przedmiot p: plan.getPrzedmioty()) {
						
						String names[] = p.getUwagi().split("/");
						
						if(p.getUwagi().matches(".*Dzienne.*")) {
							names = p.getUwagi().split(" -");
						}
						
						
						if(names != null) {
							String name = names[0];
							if(!name.substring(0, 1).matches("[0-9]+")) {
								calendarNames.add(name);
							}
						}
					}
					
					setTextViewTextInThread(tv, "Zapisywanie kalendarzy");
					for(KalendarzTyp kt: calendarTypes) {
						for(String name: calendarNames) {
							if(kt.getNazwa().equals(name)) {
								ArrayList<Dzien> kalendarz = soap.downloadCalendar(kt.getLink());
								planDataSource.writeDaysList(kalendarz, kt.getLink());
							}
						}
					}
					manageMainMenuUI();
				} catch (SoapFault e) {
					HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), mActivity);
				} catch (IOException e) {
					HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), mActivity);
				} catch (XmlPullParserException e) {
					HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), mActivity);
				} catch (ParseException e) {
					HelperMethodsManager.manageException("MainMenuActivity::onCreate()", e.getLocalizedMessage(), mActivity);
				}
    			setTextViewTextInThread(tv, "Zapisywanie planu");
    			if(!plan.getPrzedmioty().isEmpty()) {
    				// Zapisanie planu do bazy SQLite
    				if(!planDataSource.writePlan(plan))
    				{
    					if(plan.getPrzedmioty().isEmpty() && plan.getNauczycieli().isEmpty()) {
    						PrefrencesManager pm =  PrefrencesManager.getInstance(mActivity.getBaseContext());
        					pm.addBooleanToPreferences("hasData", true);
    						
        					layoutNextClass.post(new Runnable() {

        						public void run() {

        							showNextClass();
        						}
        					});
            			} else {
            				HelperMethodsManager.manageException("MainMenuActivity::onCreate()", "Błąd podczas zapisywania planu do bazy danych", mActivity);
            			}
    				} else { 
    					PrefrencesManager pm =  PrefrencesManager.getInstance(mActivity.getBaseContext());
						pm.addBooleanToPreferences("hasData", true);
    					
    					mRefreshOnOrientationChange = false; 
    					layoutNextClass.post(new Runnable() {

    						public void run() {

    							showNextClass();
    						}
    					});
    				}
    			}
    		}
    	});
    	convertToSQL.start();
	}
	
	private void manageMainMenuUI() {
		final LinearLayout layoutDownloadProgress = (LinearLayout) findViewById(R.id.layoutDownloadProgress);
		final Button todayButton = (Button)findViewById(R.id.mm_today_btn);
		final Button timetableButton = (Button)findViewById(R.id.mm_timetable_btn);
		final Button newsButton = (Button)findViewById(R.id.mm_news_btn);
		final Button panelButton = (Button)findViewById(R.id.mm_panel_btn);
		final Button mailButton = (Button)findViewById(R.id.mm_mail_btn);
		final String appMode = PrefrencesManager.getInstance(this).getStringFromPreferences("appmode");
		
		layoutDownloadProgress.post(new Runnable() {
			
			public void run() {
				layoutDownloadProgress.setVisibility(LinearLayout.GONE);
				todayButton.setVisibility(Button.VISIBLE);
				timetableButton.setVisibility(Button.VISIBLE);
				newsButton.setVisibility(Button.VISIBLE);
				if(appMode.equals("student")) {
					panelButton.setVisibility(View.VISIBLE);
					mailButton.setVisibility(View.VISIBLE);
				}
			}
		});
	}
	
	
	/**
	 * Wyswietla następne zajęcia
	 */
	private void showNextClass() {
		final PlanUzDataSource planDataSource = new PlanUzDataSource(this);
		final LayoutInflater  inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

		try {
			mPrzedmiot = planDataSource.getNextTodayClass();

			planDataSource.getCurrentClass();

			LinearLayout timeTableItem = (LinearLayout) inflater.inflate(R.layout.timetable_item, null);
			// Zajęcia odbywają się dzisiaj
			if(mPrzedmiot != null) {

				registerForContextMenu(timeTableItem);

				layoutNextClass.addView(timeTableItem);
				{
					TextView tv = (TextView) findViewById(R.id.main_menu_next_class_day);
					tv.setText("Dzisiaj");

					// Godzina rozpoczęcia
					tv = (TextView) timeTableItem.findViewById(R.id.startTime);
					tv.setText(mPrzedmiot.getGodzinaRozpoczecia());

					// Nazwa przedmiotu
					tv = (TextView) timeTableItem.findViewById(R.id.className);
					tv.setText(mPrzedmiot.getNazwa());

					// Podgrupa
					tv = (TextView) timeTableItem.findViewById(R.id.subgroup);
					if(!mPrzedmiot.getPodgrupa().equals("")) {
						tv.setVisibility(View.VISIBLE);
						tv.setText(mPrzedmiot.getPodgrupa());
					} else {
						tv.setVisibility(View.GONE);
					}

					// Godzina zakończenia
					tv = (TextView) timeTableItem.findViewById(R.id.endTime);
					tv.setText(mPrzedmiot.getGodzinaZakonczenia());

					// Rodzaj zajęć
					tv = (TextView) timeTableItem.findViewById(R.id.classType);
					tv.setText(mPrzedmiot.getRodzajZajec());

					final ArrayList<Sala> sala = planDataSource.readSale(mPrzedmiot.getFkSali());

					// Sala
					tv = (TextView) timeTableItem.findViewById(R.id.classNumber);
					tv.setText(sala.get(0).getNazwa().trim());

					// Budynek
					tv = (TextView) timeTableItem.findViewById(R.id.building);
					tv.setText(sala.get(0).getSymbolBudynku().trim());

					final ArrayList<Nauczyciel> nauczyciel = planDataSource.readNauczyciel(mPrzedmiot.getFkNauczyciela());

					// Wykładowca
					tv = (TextView) timeTableItem.findViewById(R.id.teacher);
					tv.setText(nauczyciel.get(0).getNazwa());
				}
			} else { // Zajęcia odbywają się w innym dniu
				mPrzedmiot = planDataSource.getNextClassFromOtherDay();

				if(mPrzedmiot == null) {
					TextView tv = new TextView(this);
					tv.setText("Brak zajęć");
					layoutNextClass.addView(tv);
				} else {
					registerForContextMenu(timeTableItem);

					layoutNextClass.addView(timeTableItem);
					{
						TextView tv = (TextView) findViewById(R.id.main_menu_next_class_day);
						tv.setText(mPrzedmiot.getDzien() + " (" + mPrzedmiot.getData().substring(0,5) + ")");

						// Godzina rozpoczęcia
						tv = (TextView) timeTableItem.findViewById(R.id.startTime);
						tv.setText(mPrzedmiot.getGodzinaRozpoczecia());

						// Nazwa przedmiotu
						tv = (TextView) timeTableItem.findViewById(R.id.className);
						tv.setText(mPrzedmiot.getNazwa());

						// Podgrupa
						tv = (TextView) timeTableItem.findViewById(R.id.subgroup);
						if(!mPrzedmiot.getPodgrupa().equals("")) {
							tv.setVisibility(View.VISIBLE);
							tv.setText(mPrzedmiot.getPodgrupa());
						} else {
							tv.setVisibility(View.GONE);
						}

						// Godzina zakończenia
						tv = (TextView) timeTableItem.findViewById(R.id.endTime);
						tv.setText(mPrzedmiot.getGodzinaZakonczenia());

						// Rodzaj zajęć
						tv = (TextView) timeTableItem.findViewById(R.id.classType);
						tv.setText(mPrzedmiot.getRodzajZajec());

						final ArrayList<Sala> sala = planDataSource.readSale(mPrzedmiot.getFkSali());

						// Sala
						tv = (TextView) timeTableItem.findViewById(R.id.classNumber);
						tv.setText(sala.get(0).getNazwa().trim());

						// Budynek
						tv = (TextView) timeTableItem.findViewById(R.id.building);
						tv.setText(sala.get(0).getSymbolBudynku().trim());

						final ArrayList<Nauczyciel> nauczyciel = planDataSource.readNauczyciel(mPrzedmiot.getFkNauczyciela());

						// Wykładowca
						tv = (TextView) timeTableItem.findViewById(R.id.teacher);
						tv.setText(nauczyciel.get(0).getNazwa());
					}
				}
			}
		} catch (ParseException e) {
			HelperMethodsManager.manageException("MainMenuActivity::showNextClass()", e.getLocalizedMessage(), this);
		} catch (SQLException e) {
			HelperMethodsManager.manageException("MainMenuActivity::showNextClass()", e.getLocalizedMessage(), this);
		} catch (IOException e) {
			HelperMethodsManager.manageException("MainMenuActivity::showNextClass()", e.getLocalizedMessage(), this);
		} catch (XmlPullParserException e) {
			HelperMethodsManager.manageException("MainMenuActivity::showNextClass()", e.getLocalizedMessage(), this);
		}
	}
	
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
	                                ContextMenuInfo menuInfo) {
	    super.onCreateContextMenu(menu, v, menuInfo);
	    
	    menu.setHeaderTitle("Informacje");
	    MenuInflater inflater = getMenuInflater();
	    inflater.inflate(R.menu.class_menu, menu);
	    
	    // Ilość zajęć na liście
	    int classNumber = layoutNextClass.getChildCount();
	    for(int i = 0; i < classNumber; i++) {
	    	if(v.equals(layoutNextClass.getChildAt(i))) {
	    		selectedClass = i;
	    		break;
	    	}
	    }
	}
	
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		
		if(selectedClass < 0) {
			return super.onContextItemSelected(item);
		}
	    
	    switch (item.getItemId()) {
	    case R.id.notes:
	    {
	    	String notes = mPrzedmiot.getUwagi();
	    	Intent intent = new Intent(this, SubjectNotesActivity.class);
	    	intent.putExtra("uwagi", notes);
	    	startActivity(intent);
	    	return true;
	    }
	    
	    case R.id.building:
	    {
	    	Sala sala = mPrzedmiot.getSala(this);
	    	Intent intent = new Intent(this, BuildingViewActivity.class);
	    	intent.putExtra("budynek", sala.getSymbolBudynku());
	    	startActivity(intent);
	    	return true;
	    }
	    
	    case R.id.teacher:
	    {
	    	Nauczyciel n = mPrzedmiot.getNauczyciel(this);
	    	String nazwa = n.getNazwa();
	    	String[] parts = nazwa.split(",");
	    	parts = parts[0].split("\\s");
	    	
	    	String nazwisko = new String( parts[parts.length - 1] );
	    	String imie = parts[parts.length - 2];
	    	
	    	try {
	    		PersDataSource ds = new PersDataSource(this);
	    		Integer id = ds.getTeacherID(imie, nazwisko);
	    		
	    		Intent intent = new Intent(this, NauczycielViewActivity.class);
	    		intent.putExtra("id", id);
	    		intent.putExtra("nazwa", imie + " " + nazwisko);
	    		startActivity(intent);
	    		return true;
	    	} catch (SQLException e) {
	    		HelperMethodsManager.manageException("MainMenuActivity::onContextItemSelected()", e.getLocalizedMessage(), this);
	    	} catch (IOException e) {
	    		HelperMethodsManager.manageException("MainMenuActivity::onContextItemSelected()", e.getLocalizedMessage(), this);
	    	}
			return false;
	    }
         
	        default:
	            return super.onContextItemSelected(item);
	    }
	}

	/**
	 * Zabezpieczenie przed możliwością powrotu do menu głównego po wybraniu opcji zmany danych
	 */
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if(requestCode == 12345) {
			if(resultCode == 100){
				finish();
			}
		}
	}

	/**
	 * Wyświetla przyciski w menu głównym
	 */
	private void showButtons() {
		Button button = (Button)findViewById(R.id.mm_today_btn);
		button.setVisibility(Button.VISIBLE);
		button = (Button)findViewById(R.id.mm_timetable_btn);
		button.setVisibility(Button.VISIBLE);
		button = (Button)findViewById(R.id.mm_news_btn);
		button.setVisibility(Button.VISIBLE);
		final String appMode = PrefrencesManager.getInstance(this).getStringFromPreferences("appmode");
		if(appMode.equals("student")) {
			button = (Button)findViewById(R.id.mm_panel_btn);
			button.setVisibility(Button.VISIBLE);
			button = (Button)findViewById(R.id.mm_mail_btn);
			button.setVisibility(Button.VISIBLE);
		}
	}
	
	/**
	 * Konfiguruje przyciski w menu głównym
	 */
	private void setupUI() {
		final Button timetableButton = (Button)findViewById(R.id.mm_timetable_btn);
		timetableButton.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				Intent intent = new Intent(v.getContext(), WeekViewActivity.class);
				startActivity(intent);
			}
		});
		
		final Button todayClassButton = (Button)findViewById(R.id.mm_today_btn);
		todayClassButton.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				Intent intent = new Intent(v.getContext(), DayViewActivity.class);
				startActivity(intent);
			}
		});
		
		final Button newsButton = (Button)findViewById(R.id.mm_news_btn);
		newsButton.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				Intent intent = new Intent(v.getContext(), NewsViewActivity.class);
				startActivity(intent);
			}
		});
		
		final Button panelButton = (Button)findViewById(R.id.mm_panel_btn);
		panelButton.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				final String url = "http://lord.uz.zgora.pl:7777/dziek_stud/www_student.login";
						
				HelperMethodsManager.goToUrl(url, MainMenuActivity.this);
			}
		});
		
		final Button mailButton = (Button)findViewById(R.id.mm_mail_btn);
		mailButton.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				final String url = "https://poczta.stud.uz.zgora.pl/";
						
				HelperMethodsManager.goToUrl(url, MainMenuActivity.this);
			}
		});
	}
	
	private void showSettingsView() {
		Intent intent = new Intent(this, SettingsViewActivity.class);
		startActivityForResult(intent, 12345);
	}
	
	private void showAboutView() {
		Intent intent = new Intent(this, AboutViewActivity.class);
		startActivity(intent);
	}
}